#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
int main(){
int n,k;
cin >> n >> k;
int inds[n + 1];
for (int i = 1; i <= n; i++){
cin >> inds[i];
}
int reads[n + 1];
memset(reads, 0, sizeof(reads));
for (int i = 1; i <= n; i++){
int prev = inds[i];
int l = max(1, prev - k);
int curl = max(1, i - k);
int r = min(n, prev + k);
int curr = min(n, i + k);
if (prev == 0){
reads[i] = (curr - curl + 1);
continue;
}
if (curl > r){
reads[i] = (curr - curl + 1) + reads[prev];
}
else{
int diff = curr - r;
reads[i] = diff + reads[prev];
}
}
for (int i = 1; i <= n; i++){
cout << reads[i] << " ";
}
}
39F - Pacifist frogs | 1451C - String Equality |
386A - Second-Price Auction | 1690E - Price Maximization |
282B - Painting Eggs | 440A - Forgotten Episode |
233B - Non-square Equation | 628B - New Skateboard |
262B - Roma and Changing Signs | 755C - PolandBall and Forest |
456B - Fedya and Maths | 376B - IOU |
1623B - Game on Ranges | 1118A - Water Buying |
1462C - Unique Number | 301A - Yaroslav and Sequence |
38A - Army | 38C - Blinds |
1197A - DIY Wooden Ladder | 1717D - Madoka and The Corruption Scheme |
1296D - Fight with Monsters | 729D - Sea Battle |
788A - Functions again | 1245B - Restricted RPS |
1490D - Permutation Transformation | 1087B - Div Times Mod |
1213B - Bad Prices | 1726B - Mainak and Interesting Sequence |
1726D - Edge Split | 1726C - Jatayu's Balanced Bracket Sequence |